--- a/test.c
+++ b/test.c
@@ -1202,7 +1202,7 @@ void block_move(int iter, int me)
 			} else {
 				pe = end;
 			}
-			if (pe >= end) {
+			if ((pe >= end && end != 0) || (pe < p && end == 0)) {
 				pe = end;
 				done++;
 			}
@@ -1280,7 +1280,7 @@ void block_move(int iter, int me)
 			} else {
 				pe = end;
 			}
-			if (pe >= end) {
+			if ((pe >= end && end != 0) || (pe < p && end == 0)) {
 				pe = end;
 				done++;
 			}
@@ -1359,7 +1359,7 @@ void block_move(int iter, int me)
 			} else {
 				pe = end;
 			}
-			if (pe >= end) {
+			if ((pe >= end && end != 0) || (pe < p && end == 0)) {
 				pe = end;
 				done++;
 			}
